<?php
/*
 * Copyright (c) 2017-2025 Tencent. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
namespace TencentCloud\Cwp\V20180228\Models;
use TencentCloud\Common\AbstractModel;

/**
 * DescribeAssetTypeTop response structure.
 *
 * @method array getUser() Obtain Top 5 accounts
Note: This field may return null, indicating that no valid values can be obtained.
 * @method void setUser(array $User) Set Top 5 accounts
Note: This field may return null, indicating that no valid values can be obtained.
 * @method array getPort() Obtain Top 5 ports
Note: This field may return null, indicating that no valid values can be obtained.
 * @method void setPort(array $Port) Set Top 5 ports
Note: This field may return null, indicating that no valid values can be obtained.
 * @method array getProcess() Obtain Top 5 processes
Note: This field may return null, indicating that no valid values can be obtained.
 * @method void setProcess(array $Process) Set Top 5 processes
Note: This field may return null, indicating that no valid values can be obtained.
 * @method array getSoftware() Obtain Top 5 software
Note: This field may return null, indicating that no valid values can be obtained.
 * @method void setSoftware(array $Software) Set Top 5 software
Note: This field may return null, indicating that no valid values can be obtained.
 * @method array getDatabase() Obtain Top 5 databases
Note: This field may return null, indicating that no valid values can be obtained.
 * @method void setDatabase(array $Database) Set Top 5 databases
Note: This field may return null, indicating that no valid values can be obtained.
 * @method array getWebApp() Obtain Top 5 web applications
Note: This field may return null, indicating that no valid values can be obtained.
 * @method void setWebApp(array $WebApp) Set Top 5 web applications
Note: This field may return null, indicating that no valid values can be obtained.
 * @method array getWebLocation() Obtain Top 5 web sites
Note: This field may return null, indicating that no valid values can be obtained.
 * @method void setWebLocation(array $WebLocation) Set Top 5 web sites
Note: This field may return null, indicating that no valid values can be obtained.
 * @method array getWebFrame() Obtain Top 5 web frameworks
Note: This field may return null, indicating that no valid values can be obtained.
 * @method void setWebFrame(array $WebFrame) Set Top 5 web frameworks
Note: This field may return null, indicating that no valid values can be obtained.
 * @method array getWebService() Obtain Top 5 web services
Note: This field may return null, indicating that no valid values can be obtained.
 * @method void setWebService(array $WebService) Set Top 5 web services
Note: This field may return null, indicating that no valid values can be obtained.
 * @method string getRequestId() Obtain The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
 * @method void setRequestId(string $RequestId) Set The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
 */
class DescribeAssetTypeTopResponse extends AbstractModel
{
    /**
     * @var array Top 5 accounts
Note: This field may return null, indicating that no valid values can be obtained.
     */
    public $User;

    /**
     * @var array Top 5 ports
Note: This field may return null, indicating that no valid values can be obtained.
     */
    public $Port;

    /**
     * @var array Top 5 processes
Note: This field may return null, indicating that no valid values can be obtained.
     */
    public $Process;

    /**
     * @var array Top 5 software
Note: This field may return null, indicating that no valid values can be obtained.
     */
    public $Software;

    /**
     * @var array Top 5 databases
Note: This field may return null, indicating that no valid values can be obtained.
     */
    public $Database;

    /**
     * @var array Top 5 web applications
Note: This field may return null, indicating that no valid values can be obtained.
     */
    public $WebApp;

    /**
     * @var array Top 5 web sites
Note: This field may return null, indicating that no valid values can be obtained.
     */
    public $WebLocation;

    /**
     * @var array Top 5 web frameworks
Note: This field may return null, indicating that no valid values can be obtained.
     */
    public $WebFrame;

    /**
     * @var array Top 5 web services
Note: This field may return null, indicating that no valid values can be obtained.
     */
    public $WebService;

    /**
     * @var string The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
     */
    public $RequestId;

    /**
     * @param array $User Top 5 accounts
Note: This field may return null, indicating that no valid values can be obtained.
     * @param array $Port Top 5 ports
Note: This field may return null, indicating that no valid values can be obtained.
     * @param array $Process Top 5 processes
Note: This field may return null, indicating that no valid values can be obtained.
     * @param array $Software Top 5 software
Note: This field may return null, indicating that no valid values can be obtained.
     * @param array $Database Top 5 databases
Note: This field may return null, indicating that no valid values can be obtained.
     * @param array $WebApp Top 5 web applications
Note: This field may return null, indicating that no valid values can be obtained.
     * @param array $WebLocation Top 5 web sites
Note: This field may return null, indicating that no valid values can be obtained.
     * @param array $WebFrame Top 5 web frameworks
Note: This field may return null, indicating that no valid values can be obtained.
     * @param array $WebService Top 5 web services
Note: This field may return null, indicating that no valid values can be obtained.
     * @param string $RequestId The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
     */
    function __construct()
    {

    }

    /**
     * For internal only. DO NOT USE IT.
     */
    public function deserialize($param)
    {
        if ($param === null) {
            return;
        }
        if (array_key_exists("User",$param) and $param["User"] !== null) {
            $this->User = [];
            foreach ($param["User"] as $key => $value){
                $obj = new AssetKeyVal();
                $obj->deserialize($value);
                array_push($this->User, $obj);
            }
        }

        if (array_key_exists("Port",$param) and $param["Port"] !== null) {
            $this->Port = [];
            foreach ($param["Port"] as $key => $value){
                $obj = new AssetKeyVal();
                $obj->deserialize($value);
                array_push($this->Port, $obj);
            }
        }

        if (array_key_exists("Process",$param) and $param["Process"] !== null) {
            $this->Process = [];
            foreach ($param["Process"] as $key => $value){
                $obj = new AssetKeyVal();
                $obj->deserialize($value);
                array_push($this->Process, $obj);
            }
        }

        if (array_key_exists("Software",$param) and $param["Software"] !== null) {
            $this->Software = [];
            foreach ($param["Software"] as $key => $value){
                $obj = new AssetKeyVal();
                $obj->deserialize($value);
                array_push($this->Software, $obj);
            }
        }

        if (array_key_exists("Database",$param) and $param["Database"] !== null) {
            $this->Database = [];
            foreach ($param["Database"] as $key => $value){
                $obj = new AssetKeyVal();
                $obj->deserialize($value);
                array_push($this->Database, $obj);
            }
        }

        if (array_key_exists("WebApp",$param) and $param["WebApp"] !== null) {
            $this->WebApp = [];
            foreach ($param["WebApp"] as $key => $value){
                $obj = new AssetKeyVal();
                $obj->deserialize($value);
                array_push($this->WebApp, $obj);
            }
        }

        if (array_key_exists("WebLocation",$param) and $param["WebLocation"] !== null) {
            $this->WebLocation = [];
            foreach ($param["WebLocation"] as $key => $value){
                $obj = new AssetKeyVal();
                $obj->deserialize($value);
                array_push($this->WebLocation, $obj);
            }
        }

        if (array_key_exists("WebFrame",$param) and $param["WebFrame"] !== null) {
            $this->WebFrame = [];
            foreach ($param["WebFrame"] as $key => $value){
                $obj = new AssetKeyVal();
                $obj->deserialize($value);
                array_push($this->WebFrame, $obj);
            }
        }

        if (array_key_exists("WebService",$param) and $param["WebService"] !== null) {
            $this->WebService = [];
            foreach ($param["WebService"] as $key => $value){
                $obj = new AssetKeyVal();
                $obj->deserialize($value);
                array_push($this->WebService, $obj);
            }
        }

        if (array_key_exists("RequestId",$param) and $param["RequestId"] !== null) {
            $this->RequestId = $param["RequestId"];
        }
    }
}
